In recent years, a new class of storage systems has arisen in which all data is stored in a Dynamic Random-Access Memory (DRAM). Because of the relatively high cost of DRAM, it is important for these systems to use their memory efficiently.
In order to improve usage efficiency of memory, a log-structured approach which treats memory as a sequentially written log is proposed. The approach supports memory utilizations of 80-90% while providing high performance, provides incremental copying garbage collectors, supports concurrent cleaning without affecting normal operations, and handles changing workloads.
However, the restriction of the approach is that it supports only APPEND operation. Thus, each time that an object is updated, a new full version of the object is appended to the log and the old one is marked as deprecated. Periodically, a log cleaner recovers all the wasted space. While this approach is very efficient when the ratio of reads is very high or the size of the objects is small (for example, a few bytes), in the case of update of a large object (for, example, several kilobytes (KB)), the log grows continuously with new versions of the object even though only a few bytes of the object have changed, therefore occupying amount of storage space.
Therefore, it is needed to provide a solution to improve utilization of memory.